<?php

/**
 * page.class.php	分页类.
 
 *
 
 * @copyright			(C) 2005-2010 BUSY
 * @license				
 
 * @lastmodify			2012-6-1
 */
defined('G_IN_SYSTEM') or exit('No permission resources.');

class  page
{
    private $total;                    //总条数

    private $num;                    //显示条数

    private $url;                    //没有&page的URL

    private $limit;                    //限制显示条数

    private $page;                    //当前页数

    private $pagetotal;                //一共多少页数	

    private $pageurl;                //外部定义分页url

    public function config($total, $num, $page, $pageurl = '')
    {
        $this->total = $total;

        $this->num = $num;

        $this->pageurl = $pageurl;

        $this->pagetotal = ceil($this->total / $this->num);

        $this->page = $this->get_url_page($page);

        $this->url = $this->geturl();

        $this->limit = $this->setlimit();
    }

    // 主入口

    public function show($style = '', $ret = '')
    {
        $style = strtolower(trim($style));

        switch ($style) {

            case 'one' :                //普通的样式			

                return $this->ordinary($ret);

                break;

            case 'two' :

                return $this->pagelist($ret);

                break;

            default:

                return $this->pagelist($ret);

                break;

        }
    }

    // 普通的样式

    private function ordinary($ret)
    {
        $Prev = $this->page - 1;

        $next = $this->page + 1;

        $html_l = "<ul id='Page_Ul'>";

        $html = '';

        if ($Prev != 0) {
            $html .= "<li id='Page_Prev'><a href=\"{$this->url[0]}{$Prev}{$this->url[1]}\">上一页</a></li>";
        } else {
            $html .= "<li id='Page_Prev'><a href=\"javascript:void(0);\">上一页</a></li>";
        }

        if ($next <= $this->pagetotal) {
            $html .= "<li id='Page_Next'><a href=\"{$this->url[0]}{$next}{$this->url[1]}\">下一页</a></li>";
        } else {
            $html .= "<li id='Page_Next'><a href=\"javascript:void(0);\">下一页</a></li>";
        }

        $html .= "<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>";

        $html .= "<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>";

        $html_r = '</ul>';

        if ($this->total == 0) {
            return;
        } else {
            if ($ret == 'li') {
                return $html;
            } else {
                return $html_l.$html.$html_r;
            }
        }
    }

    // 默认的样式-列表样式

    private function pagelist($ret)
    {
        $listnum = floor(7 / 2);

        $html_l = "<ul id='Page_Ul'>";

        $html = '';

        $html .= "<li id='Page_Total'>{$this->total}条";

        $html .= "<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>";

        if ($this->page == 1) {
            $html .= "<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page).$this->url[1].'">上一页</a></li>';
        } else {
            $html .= "<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page - 1).$this->url[1].'">上一页</a></li>';
        }

        for ($i = $listnum;$i >= 1;--$i) {
            $page = $this->page - $i;

            if ($page < 1) {
                continue;
            } else {
                $html .= "<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";
            }
        }

        $html .= "<li class='Page_This'>{$this->page}</li>";

        for ($i = 1;$i <= $listnum;++$i) {
            $page = $this->page + $i;

            if ($page <= $this->pagetotal) {
                $html .= "<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";
            } else {
                continue;
            }
        }

        if ($this->page == $this->pagetotal) {
            $html .= "<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page).$this->url[1].'">下一页</a></li>';
        } else {
            $html .= "<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page + 1).$this->url[1].'">下一页</a></li>';
        }

        $html .= "<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>";

        $html_r = '</ul>';

        if ($this->total == 0) {
            return;
        } else {
            if ($ret == 'li') {
                return $html;
            } else {
                return $html_l.$html.$html_r;
            }
        }
    }

    //获取URL

    private function geturl()
    {
        $url = array(0 => '', 1 => '');

        $urls = get_web_url();

        // $urls = str_ireplace("/index.php/","/",$urls);

        $urls = trim($urls, '/');

        $parse = parse_url($urls);

        if (isset($parse['query'])) {
            parse_str($parse['query'], $parses);

            unset($parses['p']);

            if (empty($parses)) {
                $urls = $parse['path'].'?';
            } else {
                $urls = $parse['path'].'?'.http_build_query($parses).'&';

                $urls = str_ireplace('%2f', '/', $urls);

                $urls = str_ireplace('=&', '/&', $urls);
            }
        } else {
            $urls = $parse['path'].'?';
        }

        $urls = preg_replace("#\/\/#", '/', $urls);

        $url[0] = $urls.'p=';

        return $url;
    }

    private function get_url_page($page = 1)
    {

            /*

            global $_cfg;			

            $param = end($_cfg['param_arr']);

            if(empty($param)){				

                $_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';

                $page = 1;

            }else{

                preg_match_all("/p(.*)q/i", $param,$matches,PREG_SET_ORDER);

                if(isset($matches[0][1])){

                    $page = abs(intval($matches[0][1]));					

                }else{					

                    $_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';

                    $page = 1;

                }				

            }

            */

            $page = abs(intval($page));

        if (!$page) {
            $page = 1;
        }

        if ($page > $this->pagetotal) {
            $page = $this->pagetotal;
        }

        return $page;
    }

    private function get_this_url()
    {
        global $_cfg;

        $urls = WEB_PATH.'/'.$_cfg['param_arr']['url'];

        $urls = explode('/', $urls);

        array_pop($urls);

        $urls = implode('/', $urls);

        return array($urls.'/p', 'q');
    }

    //设置LIMIT

    private function setlimit()
    {
        return 'LIMIT '.($this->page - 1) * $this->num.','.$this->num;
    }

    //使外部能访问limit

    public function __get($value)
    {
        return $this->$value;
    }
}
